iT邦幫忙

2023 iThome 鐵人賽

DAY 30
0
Mobile Development

好好用的 flutter 套件系列 第 30

好好用的 flutter 套件 - Day 30 firebase_messaging

  • 分享至 

  • xImage
  •  

需求

想要發送系統通知、公告和優惠等等的訊息給app,
就可以使用firebase_messaging,來通知app!!

firebase_messaging - Readme

是一種跨平台訊息傳遞解決方案,可讓您免費可靠地傳送訊息。

firebase_messaging - Install

直接在 pubspec.yaml 加上 firebase_messaging: ^14.6.9,然後pub get
dependencies:
  firebase_messaging: ^14.6.9

https://ithelp.ithome.com.tw/upload/images/20231014/20121643FbZQZdci2J.png

firebase_messaging - Example

在 /lib/main.dart 加入 程式
import 'package:firebase_messaging/firebase_messaging.dart';
宣告和初始化

Future<void> firebaseMsg() async {
    WidgetsFlutterBinding.ensureInitialized();
    app = await Firebase.initializeApp(
      options: DefaultFirebaseOptions.currentPlatform,
    );
    
    final fcmToken = await FirebaseMessaging.instance.getToken();
    _showToast(fcmToken.toString() );
    print('fcmToken: ${fcmToken.toString()}');

FirebaseMessaging.onMessage.listen((RemoteMessage message) {
      print('Got a message whilst in the foreground!');
      print('Message data: ${message.data}');
      _showAlert(message);

      if (message.notification != null) {
        print('Message also contained a notification: ${message.notification}');
      }
    });
}    

_showAlert(RemoteMessage message) {
    Alert(
      context: context,
      type: AlertType.success,
      title: message.data['title'],
      desc: message.data['body'],
      buttons: [
        DialogButton(
          child: Text(
            "完賽",
            style: TextStyle(color: Colors.white, fontSize: 18),
          ),
          onPressed: () => Navigator.pop(context),
          gradient: LinearGradient(colors: [
            Color.fromRGBO(116, 116, 191, 1.0),
            Color.fromRGBO(52, 138, 199, 1.0),
          ]),
        )
      ],
    ).show();
  }
...
void initState() {
    firebaseMsg()
}

執行結果

由firebase 後台 Messaging 發送訊息

建立通知訊息
https://ithelp.ithome.com.tw/upload/images/20231014/20121643E3guNZtIDO.png

step1 通知
https://ithelp.ithome.com.tw/upload/images/20231014/20121643reNznaoQ3Y.png

step2 指定目標
https://ithelp.ithome.com.tw/upload/images/20231014/20121643cU1mgPGTf6.png

step3 排定時間 下一步
step4 設定轉換事件 (選用) 下一步

step5 其他選項 (選用)
https://ithelp.ithome.com.tw/upload/images/20231014/20121643MyqdQkV1An.png

按下審查
https://ithelp.ithome.com.tw/upload/images/20231014/201216436HXwq1SteP.png

發送執行
https://ithelp.ithome.com.tw/upload/images/20231014/20121643CcPYUeVXtz.png

app前景就會收到訊息
https://ithelp.ithome.com.tw/upload/images/20231014/201216438e5HylEVwy.png

心得

firebase_messaging 是不是不用server就可以簡單好用的收到訊息呀!!

完賽心得

 flutter 套件 還有好多好多都沒有介紹,這30天介紹都是系統功能面的套件比較多, 
 UI 方面的套件其實還有很多很好用的,那就給大家去發現嘍!
 終於完賽YA !!!!!!!

上一篇
好好用的 flutter 套件 - Day 29 firebase_crashlytics
系列文
好好用的 flutter 套件30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言